/**
 * Created by Pyj on 2019/08/20.
 */
/***********************面板-start****************************/
var rowData=[];
var valMsgRemoveTime=2000;

//用户主列表参数面板
var userGridOpt={
    id:"userGrid",//渲染对象ID 控件的唯一标识
    //title:"测试wdfGrid",//表格标题名暂时不要使用该属性,因为该实现为完善
    autoWidth:true,//是否自适应宽度,该属性设置时,列的width属性将失效,要让列的width属性生效请关闭该属性并设置colFixed属性为true
    autoHeight:true,
    //colFixed:true,//固定列宽,该属性启动时列width属性有效,autoWidth属性无效
    className:"test",//表格样式类名
    //checkbox:true,//是否显示选中按钮
    isMulitCheck:true,//是否支持多选
    loadMsg:"正在加载数据请稍等",//表格加载显示信息
    rowData:rowData,
    // autoGridHeight:true,
    root:"data",//服务端返回的数据对象名
    url:basePath+"/user/listByCondition",
    columns:[
        {
            hidden : false,// 是否隐藏该列
            label : "帐号",// 显示列名称
            name : "userName",// 列字段属性名
            width : "60"// 列宽度
        },{
            hidden : false,// 是否隐藏该列
            label : "姓名",// 显示列名称
            name : "name",// 列字段属性名
            width : "60",// 列宽度
            isOrder : true// 是否排序
        }, {
            hidden : false,// 是否隐藏该列
            label : "性别",// 显示列名称
            name : "sex",// 列字段属性名
            width : "30",// 列宽度
            formatter : function(columnValue) {
                if(columnValue==0){
                    return "女";
                }
                if(columnValue==1){
                    return "男";
                }
            },// 格式化
            isOrder : true// 是否排序
        },{
            hidden : false,// 是否隐藏该列
            label : "电话",// 显示列名称
            name : "phone",// 列字段属性名`
            width : "60",// 列宽度
            isOrder : true// 是否排序

        },{
            hidden : false,// 是否隐藏该列
            label : "邮箱",// 显示列名称
            name : "email",// 列字段属性名`
            width : "80",// 列宽度
            isOrder : true// 是否排序
        },/*{
            hidden : false,// 是否隐藏该列
            label : "所属机构",// 显示列名称
            name : "departmentName",// 列字段属性名`
            width : "80",// 列宽度
            isOrder : true// 是否排序
        },*/{
            hidden : false,// 是否隐藏该列
            label : "机构权限",// 显示列名称
            name : "departmentNames",// 列字段属性名`
            width : "80",// 列宽度
            isOrder : true// 是否排序
        },
        {
            hidden : false,// 是否隐藏该列
            label : "角色权限",// 显示列名称
            name : "roleNames",// 列字段属性名`
            width : "80",// 列宽度
            isOrder : true,// 是否排序
        },
        {
            hidden : false,// 是否隐藏该列
            label : "状态",// 显示列名称
            name : "status",// 列字段属性名
            width : "30",// 列宽度
            isOrder : true,// 是否排序
            formatter : function(columnValue) {
                if(columnValue==0){
                    return "禁用";
                }
                if(columnValue==1){
                    return "启用";
                }
            }
        },{
            hidden : false,// 是否隐藏该列
            label : "操作",// 显示列名称
            name : "status",// 列字段属性名`
            width : "150",// 列宽度
            isOrder : true,// 是否排序
            isFmtHtml:true,//格式化是否返回html
            formatter : function(columnValue,rowData){
                var status="<a class='gridview_btn' href=\"javascript:changeUserStatus('"+rowData.id+"','0');\">禁用</a>";
                var authority = "<a class='gridedit_btn' href='javascript:addUserOfAuthority(\""+rowData.id+"\",\""+rowData.name+"\")'>权限设置</a>";
                if(columnValue=="0"){
                    status="<a class='gridview_btn'  href=\"javascript:changeUserStatus('"+rowData.id+"','1');\">启用</a>";
                }
                return status+authority;
            }
        }
    ],
    event:{
        readyLoad:function(opt,gridObj){//grid数据加载前执行
            $(".panel").css("display","none");
        },
        restGridHeight:function(gridHeight,gridObj){
            return gridHeight-$("#searchForm").height();
        },
        onRowMouse:function (rowData,gridObj) {
            var edit=$("<a class='gridedit_btn' href=\"javascript:editUser('"+rowData.id+"','"+rowData.name+"');\">修改</a>");
            return [edit];
        }
    }
};

//用户添加面板参数
var addUserPanelOpt = {
    bombType:BOMB_TYPE2,
    valForm:{
        valParam:[//验证参数
            {
                inputname:"phone_User_AddPanel",
                phone:true,
                phonemsg:"电话格式不正确！",
                event:"submit"
            },
            {
                inputname:"email_User_AddPanel",
                email:true,
                emailmsg:"邮箱格式不正确！",
                event:"submit"
            },
            {
                inputname:"department_User_AddPanel",
                isnull:true,
                isnullmsg:"所属机构不能为空",
                event:"submit"
            },
            {
                inputname:"name_User_AddPanel",
                isnull:true,
                isnullmsg:"用户姓名不能为空",
                event:"submit"
            },
            {
                inputname:"password_User_AddPanel",
                isnull:true,
                isnullmsg:"用户密码不能为空！",
                minlen:5,
                minlenmsg:"密码长度不能小于6位",
                event:"submit"
            },
            {
                inputname:"userName_User_AddPanel",
                isnull:true,
                isnullmsg:"用户名不能为空！",
                event:"submit"
            },{
                inputname:"description_User_AddPanel",
                maxlen:250,
                event:"submit"
            }
        ]
    },//验证
    action:basePath+"/user/save",//表单提交地址
    event:{
        onClosed:function(obj){
        },
        okBtnClick:function(eventObj,panel){
            var input_Pwd=panel.find("#password_User_AddPanel");
            input_Pwd.val(new String($.md5(input_Pwd.val())));
            return 1;
        },
        submitSuccessed:function(data,panelObj){
            setTimeout(function(){
                panelObj.close();
                userGridOpt.keepPage=true;
                $("#userGrid").wdfGrid("reload",userGridOpt);
            },500);
        }
    }
};

//用户编辑面板参数
var editUserPanelOpt = {
    width:width,//高
    height:height,//宽
    bombType:BOMB_TYPE2,
    valForm:{
        valParam:[//验证参数
            {
                inputname:"phone_User_EditPanel",
                phone:true,
                phonemsg:"电话格式不正确！",
                event:"submit"
            },
            {
                inputname:"email_User_EditPanel",
                email:true,
                emailmsg:"邮箱格式不正确！",
                event:"submit"
            },
            {
                inputname:"department_User_EditPanel",
                isnull:true,
                isnullmsg:"所属机构不能为空",
                event:"submit"
            },
            {
                inputname:"name_User_EditPanel",
                isnull:true,
                isnullmsg:"用户姓名不能为空",
                event:"blur"
            },
            {
                inputname:"password_User_EditPanel",
                isnull:true,
                isnullmsg:"用户密码不能为空！",
                minlen:5,
                minlenmsg:"密码长度不能小于6位",
                event:"blur"
            },
            {
                inputname:"userName_User_EditPanel",
                isnull:true,
                isnullmsg:"用户名不能为空！",
                event:"blur"
            }
        ]
    },//验证
    action:basePath+"/user/update",//表单提交地址
    event:{
        onClosed:function(obj){
        },
        okBtnClick:function(eventObj,panel){

        },
        submitSuccessed:function(data,panelObj){
            setTimeout(function(){
                userGridOpt.keepPage=true;
                panelObj.close();
                $("#userGrid").wdfGrid("reload",userGridOpt);
            },500);
        }
    }
};


/***********************面板-end****************************/

/***********************通用下拉列表-start****************************/
//用户管理-查询机构列表
var department_SearchPanel_SelOpt={
    id:"department_User_SearchPanel",          //渲染对象ID
    className:"wdfSel",          //样式名称
    zTreeOption:"default",       //zTree配置参数
    mulitValsChecked:false,      //是否为多值选择模式
    // autoWidthType:true,          //自适应宽度
    width:300,
    height:360,                  //下拉面板高度
    zIndex:9999,                 //下面板层层级
    root:"data",                 //请求服务端返回的json对象的数据字段名称
    searchBar:{                  //搜索栏定义
        isOpen:true,             //是否开启
        title:""                 //标题
    },
    data:null,                   //要绑定到控件的数据，如果有该参数，则不会触发向服务端请求数据
    dataModel:{                  //后端对象到下拉树节点对象字段映射
        id:"id",//树状id字段
        pId:"pId",//父节点id字段
        name:"name",//显示字段
        realID:"realID",//真实id
        nodeType:"nodeType"//节点类型
    },
    valInput:{                   //控件值域的名称和ID用于表单的值提交
        id:"departmentIDS_User_SearchPanel",
        name:"departmentIDS"
    },
    isFixedHeight:true,          //是否固定下拉面板高度
    treeDataUrl:basePath+"/department/listTree", //非异步模式的树控件数据获取地址
    param:{//要提交的参数

    },
    dataFilter:function(nodes){  //如果非异步模式的树控件数据过滤操作

    },
    event:{
        onZTreeLoaded:function(zTree,selObj){
            // selObj.wdfSel("setVal","");
        },
        onChange:function(inputObj,selObj){

        },
        onNodeClick:function(nodeObj){
            if(nodeObj.nodeType!='Department'){
                return false;
            }else{
                return true;
            }
        }
    }
};

//用户管理-查询角色列表
var role_SearchPanel_SelOpt={
    id:"role_User_SearchPanel",          //渲染对象ID
    className:"wdfSel",          //样式名称
    zTreeOption:"default",       //zTree配置参数
    mulitValsChecked:true,       //是否为多值选择模式
    // autoWidthType:true,          //自适应宽度
    width:300,
    height:360,                  //下拉面板高度
    zIndex:9999,                 //下面板层层级
    root:"data",                 //请求服务端返回的json对象的数据字段名称
    searchBar:{                  //搜索栏定义
        isOpen:true,                 //是否开启
        title:""                     //标题
    },
    data:null,                     //要绑定到控件的数据，如果有该参数，则不会触发向服务端请求数据
    dataModel:{                  //后端对象到下拉树节点对象字段映射
        id:"id",//树状id字段
        pId:"pId",//父节点id字段
        name:"name",//显示字段
        realID:"realID",//真实id
        nodeType:"nodeType"//节点类型
    },
    valInput:{                   //控件值域的名称和ID用于表单的值提交
        id:"roleIDS_User_SearchPanel",
        name:"roleIDS"
    },
    isFixedHeight:true,          //是否固定下拉面板高度
    treeDataUrl:basePath+"/role/listTree", //非异步模式的树控件数据获取地址
    param:{//要提交的参数

    },
    dataFilter:function(nodes){  //如果非异步模式的树控件数据过滤操作
        $(nodes).each(function () {
            if (this.nodeType!="Role"){
                this.nocheck = true;
            }
        });
        return nodes;
    },
    event:{
        onZTreeLoaded:function(zTree,selObj){
            // selObj.wdfSel("setVal","");
        },
        onChange:function(inputObj,selObj){

        },
        onNodeClick:function(nodeObj){
            if(nodeObj.nodeType!='Role'){
                return false;
            }else{
                return true;
            }
        }
    }
};

//新增用户机构列表
var department_AddPanel_SelOpt={
    id:"department_User_AddPanel",          //渲染对象ID
    className:"wdfSel",          //样式名称
    zTreeOption:"default",       //zTree配置参数
    mulitValsChecked:false,       //是否为多值选择模式
    autoWidthType:true,          //自适应宽度
    height:300,                  //下拉面板高度
    zIndex:9999,                 //下面板层层级
    root:"data",                 //请求服务端返回的json对象的数据字段名称
    searchBar:{                  //搜索栏定义
        isOpen:true,                 //是否开启
        title:""                     //标题
    },
    data:null,                     //要绑定到控件的数据，如果有该参数，则不会触发向服务端请求数据
    dataModel:{                  //后端对象到下拉树节点对象字段映射
        id:"id",//树状id字段
        pId:"pId",//父节点id字段
        name:"name",//显示字段
        realID:"realID",//真实id
        nodeType:"nodeType"//节点类型
    },
    valInput:{                   //控件值域的名称和ID用于表单的值提交
        id:"departmentID_User_AddPanel",
        name:"department.id"
    },
    isFixedHeight:true,          //是否固定下拉面板高度
    treeDataUrl:basePath+"/department/listTree", //非异步模式的树控件数据获取地址
    param:{//要提交的参数

    },
    dataFilter:function(nodes){  //如果非异步模式的树控件数据过滤操作

    },
    event:{
        onZTreeLoaded:function(zTree,selObj){
            // selObj.wdfSel("setVal","");
        },
        onChange:function(inputObj,selObj){

        },
        onNodeClick:function(nodeObj){
            if(nodeObj.nodeType!='Department'){
                return false;
            }else{
                return true;
            }
        }
    }
};

//编辑用户机构列表
var department_EditPanel_SelOpt={
    id:"department_User_EditPanel",          //渲染对象ID
    className:"wdfSel",          //样式名称
    zTreeOption:"default",       //zTree配置参数
    mulitValsChecked:false,      //是否为多值选择模式
    autoWidthType:true,          //自适应宽度
    height:300,                  //下拉面板高度
    zIndex:9999,                 //下面板层层级
    root:"data",                 //请求服务端返回的json对象的数据字段名称
    searchBar:{                  //搜索栏定义
        isOpen:true,                 //是否开启
        title:""                     //标题
    },
    data:null,                     //要绑定到控件的数据，如果有该参数，则不会触发向服务端请求数据
    dataModel:{                  //后端对象到下拉树节点对象字段映射
        id:"id",//树状id字段
        pId:"pId",//父节点id字段
        name:"name",//显示字段
        realID:"realID",//真实id
        nodeType:"nodeType"//节点类型
    },
    valInput:{                   //控件值域的名称和ID用于表单的值提交
        id:"departmentID_User_EditPanel",
        name:"department.id"
    },
    isFixedHeight:true,          //是否固定下拉面板高度
    treeDataUrl:basePath+"/department/listTree", //非异步模式的树控件数据获取地址
    param:{//要提交的参数

    },
    dataFilter:function(nodes){  //如果非异步模式的树控件数据过滤操作

    },
    event:{
        onZTreeLoaded:function(zTree,selObj){
            // selObj.wdfSel("setVal","");
        },
        onChange:function(inputObj,selObj){

        },
        onNodeClick:function(nodeObj){
            if(nodeObj.nodeType!='Department'){
                return false;
            }else{
                return true;
            }
        }
    }
};

/***********************通用下拉列表-end****************************/

/***********************业务操作-start****************************/
//用户添加
function addUser(){
    addUserPanel.find("#addUserForm")[0].reset();
    addUserPanel.show("新增用户");
    addUserPanel.find(".wdfValidate_Msg").remove();
    addUserPanel.find("input").css('borderColor',"");
    addUserPanel.find("select").css('borderColor',"");
    addUserPanel.find("textarea").css('borderColor',"");
}

//用户编辑
function editUser(id,name){
    var rowDatas=$("#userGrid").wdfGrid("getRowDatasByDK",{key:"id",value:id});
    var user=rowDatas[0];
    editUserPanel.find("#id_User_EditPanel").val(user.id);
    editUserPanel.find("#userName_User_EditPanel").val(user.userName);
    editUserPanel.find("#name_User_EditPanel").val(user.name);
    editUserPanel.find("#password_User_EditPanel").val(user.password.replace(/./g,'*'));
    editUserPanel.find("#sex_User_EditPanel").val(user.sex);
    editUserPanel.find("#email_User_EditPanel").val(user.email);
    editUserPanel.find("#phone_User_EditPanel").val(user.phone);
    editUserPanel.find("#description_User_EditPanel").val(user.description);
    editUserPanel.find("#department_User_EditPanel").val(user.departmentName);
    editUserPanel.find("#departmentID_User_EditPanel").val(user.departmentId);
    editUserPanel.find(".error").removeClass("error");
    editUserPanel.find(".msgBar").remove();
    editUserPanel.show("修改用户"+"("+name+")");
}

//绑定Mac地址
function addUserMac() {
    $("#macListPanel_WdfGrid").wdfGrid("addRows",macGridOpt)([{}],true);
}

//显示Mac地址管理面板
function showMacListPanel(id,name){
    $("#userId_searchInput_macListPanel").val(id);
    macGridOpt.url=basePath+"/userMac/query?userId="+id;
    macListPanel.show("Mac地址管理 "+"("+name+")",true);
}

//新增用户Mac地址
function saveUserMac(rowData) {
    $.post(
        basePath+"/userMac/save",
        {userId:rowData.userId,pcMac:rowData.pcMac},function (obj) {
            var msg = obj.msg===undefined?"新增失败":obj.msg;
            layerMsg(msg,function () {
                macGridOpt.keepPage = true;
                $("#macGrid").wdfGrid("reload", macGridOpt);
            })
    });
}

//更新用户Mac地址
function updateUserMac(rowData) {
    $.post(
        basePath+"/userMac/update",
        {id:rowData.id,userId:rowData.userId,pcMac:rowData.pcMac},function (obj) {
        var msg = obj.msg===undefined?"更新失败":obj.msg;
        layerMsg(msg,function () {
            macGridOpt.keepPage = true;
            $("#macGrid").wdfGrid("reload", macGridOpt);
        })
    });
}

//删除用户Mac地址
function deleteUserMac(rowData) {
    $.post(basePath+"/userMac/remove",{id:rowData.id},function (obj) {
        var msg = obj.msg===undefined?"删除失败":obj.msg;
        layerMsg(msg,function () {
            macGridOpt.keepPage = true;
            $("#macGrid").wdfGrid("reload", macGridOpt);
        })
    });
}

//用户密码修改
function changePassword(obj) {
    var input_Pwd = obj.value;
    $(obj).val($.md5(new String(input_Pwd)));
}

//用户状态更新
function changeUserStatus(id,status){
    var obj=$(this);
    $.wdfProgress.progress("请稍等...",$("body"));
    $.ajax({
        url:basePath+"/user/updateStatus",
        data:{
            status:status,
            id:id,
            cType:'PCWEB'
        },
        dataType:"json",
        type: "post",
        contentType:"application/x-www-form-urlencoded",
        beforeSend:null,
        success:function(data){

            $.wdfProgress.showMsg(data.msg,$("body"),true,function(eventObj){

            });
            if (data.status==1){
                $("#userGrid").wdfGrid("reload",userGridOpt);
            }
        },
        error:function (XMLHttpRequest, textStatus, errorThrown) {
            $.wdfProgress.showMsg("系统错误或网络延迟！",$("body"),true);
        }
    });
}

//用户条件查询
function search(){
    userGridOpt.param=$("#searchForm").serialize();
    $("#userGrid").wdfGrid("reload",userGridOpt);
}

//用户管理-条件查询重置
function resetSearch() {
    $('#searchForm')[0].reset();
    $("#department_User_SearchPanel").wdfSel("setVal","");
    $("#role_User_SearchPanel").wdfSel("setVal","");
    search();
}

//验证消息显示
function showMsg(msg,input,obj){
    var msgBar=$("<div class='msgBar'>"+msg+"</div>");
    $(".msgBar").remove();
    obj.append(msgBar);
    msgBar.animate({"opacity":1},500);
    $(input).data("showMsg",msgBar);
    $(input).addClass("error");
};

//验证消息删除
function removeMsg(input){
    var msgBar=$(input).data("showMsg");
    if(msgBar){
        msgBar.remove();
    }
    $(input).removeClass("error");
};
/***********************业务操作-end****************************/

/***********************页面初始化-start****************************/
$(document).ready(function() {
    userGridOpt.param=$("#searchForm").serialize();
    userGridOpt.height = $(document).height() - $('#searchPanel').height()-20;
    $("#userGrid").wdfGrid("init",userGridOpt);
    addUserPanel=$("#addUserPanel").wdfPanel("FormPanel",addUserPanelOpt);
    editUserPanel=$("#editUserPanel").wdfPanel("FormPanel",editUserPanelOpt);

    $("#department_User_SearchPanel").wdfSel("init",department_SearchPanel_SelOpt);
    $("#role_User_SearchPanel").wdfSel("init",role_SearchPanel_SelOpt);

    $("#department_User_AddPanel").wdfSel("init",department_AddPanel_SelOpt);
    $("#department_User_EditPanel").wdfSel("init",department_EditPanel_SelOpt);

});
/***********************页面初始化-end****************************/